package com.nf2m.adapter; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.view.MotionEventCompat; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.SectionIndexer; import com.nf2m.R; import com.nf2m.activity.TarMediaPlayerActivity; import com.nf2m.draganddrop.ItemTouchHelperAdapter; import com.nf2m.draganddrop.OnStartDragListener; import com.nf2m.fragment.NowPlayingFragment; import com.nf2m.model.Library; import com.nf2m.model.Songs; import com.nf2m.preferences.Preferences; import com.nf2m.service.MediaPlayerService; import com.nf2m.viewholder.PlaylistSongItemViewHolder; public class PlaylistSongCursorAdapter extends LibraryCursorAdapter<PlaylistSongItemViewHolder> implements ItemTouchHelperAdapter, SectionIndexer { private final OnStartDragListener startDragListener; private final Library library; @NonNull private final Context context; @Nullable private Cursor songCursor; private boolean isMove; private int toPosition; private int fromPosition; private final Preferences preferences; private int playlistId; public static boolean isItemDismiss; public PlaylistSongCursorAdapter(@NonNull Context context, Cursor c, OnStartDragListener startDragListener, Library library) { super(context, c, MediaStore.Audio.Playlists.Members.TITLE); this.context = context; preferences = Preferences.newInstance(context); songCursor = c; this.startDragListener = startDragListener; this.library = library; } /** * Eger şarkı şu an çalınıyorsa play icon görüntülenecek */ private void choicePlayIconVisibility(@NonNull PlaylistSongItemViewHolder viewHolder, int audio_id, @Nullable String songPath) { if (songPath != null && MediaPlayerService.songPath != null) { Songs songs = new Songs(context); Cursor songsCursor = songs.getCursor(); if (songsCursor.moveToPosition(preferences.getPrefSongPosition())) { int id = songCursor.getInt(songCursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns._ID)); if (id == audio_id && MediaPlayerService.isPlaying && songPath.equalsIgnoreCase(MediaPlayerService.songPath)) { viewHolder.ivPPlayIcon.setVisibility(View.VISIBLE); } else { viewHolder.ivPPlayIcon.setVisibility(View.GONE); } } } } @NonNull @Override public PlaylistSongItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = inflateCustomViewAndListView(parent, R.layout.playlist_song_custom_layout); return new PlaylistSongItemViewHolder(itemView, clickListener, longClickListener); } @Override public void onBindViewHolder(@NonNull final PlaylistSongItemViewHolder holder, final int position) { songCursor = getCursor(); if (songCursor.moveToPosition(position)) { String pSongTitle = songCursor.getString(getColumnIndex(MediaStore.Audio.Playlists.Members.TITLE)); int songDurationMillis = songCursor.getInt(getColumnIndex(MediaStore.Audio.Playlists.Members.DURATION)); String albumName = songCursor.getString(getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM)); String songDuration = convertMinuteToMillis(songDurationMillis); int audio_id = songCursor.getInt(getColumnIndex(MediaStore.Audio.Playlists.Members._ID)); String songPath = songCursor.getString(getColumnIndex(MediaStore.Audio.Playlists.Members.DATA)); holder.tvPSongTitle.setText(pSongTitle); holder.tvPSongDuration.setText(songDuration); holder.tvPSongAlbumTitle.setText(albumName); holder.ivDragItem.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, @NonNull MotionEvent event) { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) { startDragListener.onStartDrag(holder); isMove = true; playlistId = songCursor.getInt(songCursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.PLAYLIST_ID)); } return false; } }); choicePlayIconVisibility(holder, audio_id, songPath); holder.itemView.setActivated(isPositionChecked(position)); } } @Override public int getItemCount() { songCursor = getCursor(); return songCursor.getCount(); } @Override public void onItemMove(int fromPosition, int toPosition) { if (isMove) { this.fromPosition = fromPosition; } isMove = false; this.toPosition = toPosition; notifyItemMoved(fromPosition, toPosition); } @Override public void onItemDismiss(int position) { songCursor.moveToPosition(position); String id = songCursor.getString(songCursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members._ID)); library.removeSongInPlaylist(library.getUri(), MediaStore.Audio.Playlists.Members._ID + " IN (" + id + ")", null); notifyItemRemoved(position); isItemDismiss = true; if (position == preferences.getPrefSongPosition() && NowPlayingFragment.play_state.equalsIgnoreCase(NowPlayingFragment.PAUSE)) { Intent playIntent = new Intent(MediaPlayerService.ACTION_PLAY); context.sendBroadcast(playIntent); NowPlayingFragment.play_state = NowPlayingFragment.PLAY; } } @Override public void onItemIdle() { if (fromPosition != toPosition) { library.moveSongInPlaylist(playlistId, fromPosition, toPosition); } } }